package classes;

import com.sun.istack.internal.NotNull;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;



/**
 *
 * @author Igor
 */
@Entity
@NamedQueries({
    @NamedQuery(name = "ToDo.findAll", query = "SELECT t FROM ToDo t"),
    @NamedQuery(name = "ToDo.findByDate", query= "SELECT T FROM ToDo t WHERE t.dataInicio <= :start AND t.dataFim >= :end "),
    @NamedQuery(name = "ToDo.findByDatePessoa", query= "SELECT T FROM ToDo t WHERE t.dataInicio <= :start AND t.dataFim >= :end AND t.nomePessoa = :pessoa"),
    @NamedQuery(name = "ToDo.findByDateCategoria", query= "SELECT T FROM ToDo t WHERE t.dataInicio <= :start AND t.dataFim >= :end AND t.nomeCategoria = :categoria "),
    @NamedQuery(name = "ToDo.findByDateProjeto", query= "SELECT T FROM ToDo t WHERE t.dataInicio <= :start AND t.dataFim >= :end AND t.nomeProjeto = :projeto "),
    @NamedQuery(name = "ToDo.findByDatePessoaCategoria", query= "SELECT T FROM ToDo t WHERE t.dataInicio <= :start AND t.dataFim >= :end AND t.nomePessoa = :pessoa AND t.nomeCategoria = :categoria "),
    @NamedQuery(name = "ToDo.findByDatePessoaProjeto", query= "SELECT T FROM ToDo t WHERE t.dataInicio <= :start AND t.dataFim >= :end AND t.nomePessoa = :pessoa AND t.nomeProjeto = :projeto "),
    @NamedQuery(name = "ToDo.findByDateCategoriaProjeto", query= "SELECT T FROM ToDo t WHERE t.dataInicio <= :start AND t.dataFim >= :end AND t.nomeCategoria = :categoria AND t.nomeProjeto = :projeto "),
    @NamedQuery(name = "ToDo.findByDatePessoaCategoriaProjeto", query= "SELECT T FROM ToDo t WHERE t.dataInicio <= :start AND t.dataFim >= :end AND t.nomePessoa = :pessoa AND t.nomeCategoria = :categoria AND t.nomeProjeto = :projeto "),
    @NamedQuery(name = "ToDo.findByInterval", query= "SELECT T FROM ToDo t WHERE t.dataInicio >= :start AND t.dataFim <= :end "),
    @NamedQuery(name = "ToDo.findByIntervalPessoa", query= "SELECT T FROM ToDo t WHERE t.dataInicio >= :start AND t.dataFim <= :end AND t.nomePessoa = :pessoa"),
    @NamedQuery(name = "ToDo.findByIntervalCategoria", query= "SELECT T FROM ToDo t WHERE t.dataInicio >= :start AND t.dataFim <= :end AND t.nomeCategoria = :categoria "),
    @NamedQuery(name = "ToDo.findByIntervalProjeto", query= "SELECT T FROM ToDo t WHERE t.dataInicio >= :start AND t.dataFim <= :end AND t.nomeProjeto = :projeto "),
    @NamedQuery(name = "ToDo.findByIntervalPessoaCategoria", query= "SELECT T FROM ToDo t WHERE t.dataInicio >= :start AND t.dataFim <= :end AND t.nomePessoa = :pessoa AND t.nomeCategoria = :categoria "),
    @NamedQuery(name = "ToDo.findByIntervalPessoaProjeto", query= "SELECT T FROM ToDo t WHERE t.dataInicio >= :start AND t.dataFim <= :end AND t.nomePessoa = :pessoa AND t.nomeProjeto = :projeto "),
    @NamedQuery(name = "ToDo.findByIntervalCategoriaProjeto", query= "SELECT T FROM ToDo t WHERE t.dataInicio >= :start AND t.dataFim <= :end AND t.nomeCategoria = :categoria AND t.nomeProjeto = :projeto "),
    @NamedQuery(name = "ToDo.findByIntervalPessoaCategoriaProjeto", query= "SELECT T FROM ToDo t WHERE t.dataInicio >= :start AND t.dataFim <= :end AND t.nomePessoa = :pessoa AND t.nomeCategoria = :categoria AND t.nomeProjeto = :projeto ")
})
public class ToDo implements Serializable {
    @Id
    @GeneratedValue
    private int id;
    
    @NotNull private String descricao;
    @NotNull @Temporal(TemporalType.DATE) private Date dataInicio;
    @NotNull @Temporal(TemporalType.DATE) private Date dataFim;
    
    private String nomePessoa;
    private String nomeCategoria;
    private String nomeProjeto;
    
    @NotNull private boolean completed;
    

    public boolean isCompleted() {
        return completed;
    }

    public void setCompleted(boolean completed) {
        this.completed = completed;
    }
    
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public Date getDataFim() {
        return dataFim;
    }

    public void setDataFim(Date dataFim) {
        this.dataFim = dataFim;
    }

    public Date getDataInicio() {
        return dataInicio;
    }

    public void setDataInicio(Date dataInicio) {
        this.dataInicio = dataInicio;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public String getNomeCategoria() {
        return nomeCategoria;
    }

    public void setNomeCategoria(String nomeCategoria) {
        this.nomeCategoria = nomeCategoria;
    }

    public String getNomePessoa() {
        return nomePessoa;
    }

    public void setNomePessoa(String nomePessoa) {
        this.nomePessoa = nomePessoa;
    }

    public String getNomeProjeto() {
        return nomeProjeto;
    }

    public void setNomeProjeto(String nomeProjeto) {
        this.nomeProjeto = nomeProjeto;
    }
    
    @Override
    public String toString() {
        return "ToDo{" + "id=" + id + ", descricao=" + descricao + ", dataInicio=" + dataInicio + ", dataFim=" + dataFim + ", completed=" + completed + '}';
    }
}
